javafx在java中显示图像或形状的二维网格
之前我制作了一个ASCII字符的二维网格,在这个网格中我可以移动一个ASCII字符。现在,我想通过在javafx窗口中制作一个“可视化”版本来将其提升到下一个级别。我试过制作两个图像对象,一个内部有一个黑色正方形,一个内部有一个白色正方形,然后将这两个对象多次放入二维网格中,如下所示:
Image[][] Grid = {
{B,W,B,B,B,B,B,B,B,B,B},
{B,B,B,B,W,W,W,B,B,B,B},
{B,B,B,B,B,B,B,B,B,B,B}
};
问题是,我知道如何显示它们的唯一方法是为每个索引制作一个imageview对象,如果我说想要一个25X25网格,这意味着我必须制作625个imageview对象,这显然是荒谬的
我还尝试过简单地将网格索引逐个放入窗格,如下所示:
HBox gameLayout = new HBox(Grid[1][1], Grid[1][2], Grid[1][3]);
但这给了我一个“invocationTargetException”
我的目标是通过专门瞄准和操纵网格元素来制作snake。当我将“B”数组元素的值更改为“W”(白色)时,我希望方形颜色/图像视图/矩形/任何东西都可以更改,但我尝试的方法要么效率很低,要么就是不起作用
# 1 楼答案
创建多个
ImageView
实例的目的完全不清楚。因为它们可以引用同一个Image
实例,所以这应该是相当有效的(图像数据不需要复制)这似乎很管用:
如果您愿意,您可以使用某种
Shape
(例如Rectangle
)来实现这一点:或者用
Region
来表示:哪一个更好实际上取决于你还想用它们做什么